import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np

# 读取音频文件，返回音频数据和采样率
audio_data, sample_rate = librosa.load(r'E:\实训\你好.wav')

# 绘制时域波形图
plt.figure(figsize=(14, 5))
librosa.display.waveshow(audio_data, sr=sample_rate)
plt.title('Time Domain Waveform')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')

# 计算音频的频谱（幅度谱）
stft = librosa.stft(audio_data)
magnitude_spectrogram = np.abs(stft)

# 将幅度谱转换为分贝刻度，更适合可视化
log_magnitude_spectrogram = librosa.amplitude_to_db(magnitude_spectrogram)

# 绘制频域频谱图（这里采用梅尔频谱图示例，你也可以用普通频谱图等其他形式）
plt.figure(figsize=(14, 5))
librosa.display.specshow(log_magnitude_spectrogram, sr=sample_rate, x_axis='time', y_axis='mel')
plt.title('Frequency Domain Spectrogram (Mel)')
plt.colorbar(format='%+2.0f dB')
plt.xlabel('Time (s)')
plt.ylabel('Mel Frequency')

plt.show()